____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―
Matrix Template Library
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
top
Die Matrix Template Library (MTL) ist eine lineare-Algebra-Bibliothek fΓΌr C++.
Die MTL benutzt Template Programmierung, die die CodelΓ€nge erheblich verkΓΌrzt. Alle Matrizen und Vektoren sind in den klassischen numerischen Formaten float, double, complex<float> oder complex<double> verfΓΌgbar. Die generische Programmierung erlaubt darΓΌber hinaus die Verwendung beliebiger Typen, die ΓΌber die notwendigen Operationen verfΓΌgen. Es kΓΆnnen auch beliebige Integerformate (z. B. unsigned short), Typen fΓΌr Intervallarithmetik (z. B. boost::interval aus der Bibliothekskollektion Boost), Quaternionen (z. B. boost::quaternion), Typen hΓΆherer PrΓ€zision (z. B. GNU Multiple Precision Arithmetic Library) und geeignete nutzerdefinierte Typen verwendet werden. Die MTL unterstΓΌtzt mehrere Implementierungen voll und schwach besetzter Matrizen. MTL2 wurde von Jeremy Siek und Andrew Lumsdaine entwickelt.cite-ref-sieklumsdaine98-1-0[1]
Die letzte Version, MTL4, wird von Peter Gottschling und Andrew Lumsdaine entwickelt. Sie enthΓ€lt den grΓΆΓten Teil der MTL2-FunktionalitΓ€t und erweitert diese um neue Optimierungstechniken, wie beispielsweise das Meta-Tuning, welches es unter anderem erlaubt, fΓΌr Operationen auf Vektoren und Matrizen mit dynamischer GrΓΆΓe die Aufrollparameter im Funktionsaufruf festzulegen. PlattformunabhΓ€ngige Skalierbarkeit der Performanz wird durch rekursive Datenstrukturen und Algorithmen erreicht.cite-ref-gottschlingetal07-2-0[2] Generische Anwendungen kΓΆnnen in einer natΓΌrlichen Notation geschrieben werden, z. B.: v += A*q - w;, wobei die Bibliothek die geeigneten Algorithmen zur Compilezeit auswΓ€hlt. Beispielsweise wird bei x*y zwischen Matrix-Vektor-Produkt, Matrizenmultiplikation, Multiplikation eines Vektors mit einem Skalarwert und vielen anderen unterschieden. Das Ziel ist, performanzrelevante technische Details in der Bibliothek zu kapseln und Forschern ein intuitives Interface anzubieten, so dass diese sich auf wissenschaftliche Algorithmen und Modelle konzentrieren kΓΆnnen.
Contents
β’ Einzelnachweise
β’ Weblinks
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Einzelnachweise
cite-note-sieklumsdaine98-11. β Jeremy G. Siek, Andrew Lumsdaine: The Matrix Template Library: A Generic Programming Approach to High Performance Numerical Linear Algebra. (Memento des Originals vom 12. Mai 2008 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprΓΌft. Bitte prΓΌfe Original- und Archivlink gemÀà Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.osl.iu.edu (PDF; 70 kB) ISCOPE, 1998.
cite-note-gottschlingetal07-22. β Peter Gottschling, David S. Wise, Michael D. Adams: Representation-transparent matrix algorithms with scalable performance. (Memento des Originals vom 20. Juli 2008 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprΓΌft. Bitte prΓΌfe Original- und Archivlink gemÀà Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.osl.iu.edu (PDF; 284 kB) In: Proc. 21st Annual Int. Conf. on Supercomputing. ACM Press, New York 2007, S. 116β125.
Weblinks